// 指数数据模块
const ZhishuModule = {
    // 指数数据
    zhishuData: [],
    selectedDate: null,

    // 处理指数数据
    processZhishuData(data) {
        console.log('开始处理指数数据:', data);
        
        if (!Array.isArray(data)) {
            console.error('指数数据格式错误: 不是数组格式');
            this.zhishuData = [];
            return;
        }

        // 按日期排序
        this.zhishuData = data.sort((a, b) => new Date(b.dateTime) - new Date(a.dateTime));
        console.log('处理后的指数数据:', this.zhishuData);
    },

    // 从API加载指数数据
    async loadZhishuData() {
        try {
            const url = `/api/zhishu/get`;
            console.log('正在请求指数数据URL:', url);
            
            const response = await axios.get(url);
            console.log('指数数据API响应:', response.data);
            
            if (response.data && response.data.code === 200) {
                const zhishuData = response.data.data || [];
                this.processZhishuData(zhishuData);
                this.showMessage('success', `成功加载指数数据`);
            } else if (Array.isArray(response.data)) {
                // 直接返回数组的情况
                this.processZhishuData(response.data);
                this.showMessage('success', `成功加载指数数据`);
            } else {
                console.error('指数数据格式异常:', response.data);
                this.showMessage('error', '指数数据格式异常: ' + JSON.stringify(response.data));
            }
        } catch (error) {
            console.error('加载指数数据失败:', error);
            this.showMessage('error', '指数数据加载失败: ' + (error.response?.data?.message || error.message || '网络错误'));
        }
    },

    // 显示消息的统一方法
    showMessage(type, message) {
        if (window.ElMessage) {
            window.ElMessage[type](message);
        } else {
            console.log(`[${type.toUpperCase()}] ${message}`);
        }
    },

    // 格式化日期显示
    formatDate(dateStr) {
        if (!dateStr) return '';
        if (dateStr.length === 8) {
            return `${dateStr.substring(0, 4)}-${dateStr.substring(4, 6)}-${dateStr.substring(6, 8)}`;
        }
        return dateStr;
    },

    // 格式化数字显示
    formatNumber(value) {
        if (!value && value !== 0) return '-';
        const num = parseFloat(value);
        return num.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
    },

    // 格式化百分比
    formatPercent(value) {
        if (!value && value !== 0) return '-';
        const num = parseFloat(value);
        return `${num.toFixed(2)}%`;
    },

    // 获取涨跌颜色
    getChangeColor(value) {
        if (!value && value !== 0) return '#606266';
        const num = parseFloat(value);
        if (num > 0) return '#f56c6c'; // 红色涨
        if (num < 0) return '#67c23a'; // 绿色跌
        return '#606266'; // 灰色平
    },

    // 选择日期
    selectDate(date) {
        this.selectedDate = date;
    },

    // 初始化方法
    init() {
        console.log('指数数据模块初始化');
        this.loadZhishuData();
    }
};